iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 19
0
Software Development

闖入DLL的世界 DLL我要進來了哦系列 第 19

第19天:強制卸載DLL 中

  • 分享至 

  • xImage
  •  

嗨大家好我是Andy,今天來到了第十九天,我們今天要繼續昨天的強制卸載DLL,由於看到一個蠻新奇的東西所以加增一集,今天突然好像變得有點熱?!把鐵人賽排在最後一個行程果然是不明智的選擇,好了廢話不多說直接進入今天的主題。

程式碼

#include <Windows.h>
#include <stdio.h>
#include <iostream>
void inject(int PID, char* Path) {
	//獲取進程句柄
	HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);
	//申請一個記憶體給Path
	LPVOID Return = VirtualAllocEx(hProcess, NULL, strlen(Path) + 1, MEM_COMMIT, PAGE_READWRITE);
	//寫入到VirtualAllocEx申請的記憶體內
	WriteProcessMemory(hProcess, Return, Path, strlen(Path) + 1, NULL);
	//LoadLibrary的函數庫
	HMODULE hModule = LoadLibrary("Kernel32.dll");

	LPTHREAD_START_ROUTINE lpStartAddress = LPTHREAD_START_ROUTINE(GetProcAddress(hModule, "LoadLibraryA"));

	CreateRemoteThread(hProcess, NULL, 0, lpStartAddress, Return, 0, NULL);


}

void Del(int PID) {
	//獲取進程句柄
	HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);
	//申請一個記憶體給Path
	LPVOID Return = (LPVOID)0x7C590000;


	//LoadLibrary的函數庫
	HMODULE hModule = LoadLibrary("Kernel32.dll");

	LPTHREAD_START_ROUTINE lpStartAddress = LPTHREAD_START_ROUTINE(GetProcAddress(hModule, "FreeLibrary"));//77609040

	CreateRemoteThread(hProcess, NULL, 0, lpStartAddress, Return, 0, NULL);



}

int main() {
	int a,pid;
	pid = 17352;
	const char* p = "D:\\鐵人賽DLL\\Dll5\\Debug\\Dll5.dll";
	while (std::cin >> a) {
		if (a == 1)
			inject(pid, (char*)p);
		else if (a == 2)
			Del(pid);

	}
	
	return 0;
}

這是之後會使用到的,雖然還沒完全打完哈哈哈
首先我們先看到LPTHREAD_START_ROUTINE(GetProcAddress(hModule, "FreeLibrary"));//77609040這串
為甚麼我會在後面打上77609040呢
因為前幾天我們講過CE如何去操作觀測DLL那這次我們可以利用這個功能去找在DLL裡面FreeLibrary被分布在哪個記憶體

而在程式碼的部分我們可以直接省略那行在最後面CreateRemoteThread(hProcess, NULL, 0, lpStartAddress, Return, 0, NULL);的lpStartAddress地方直接換成(LPTHREAD_START_ROUTINE)0x77609040就可以調用FreeLibrary函數了
其他的部分大家也可以試試看

結語

鐵人賽已經快要最後10天了,前面辛苦了許多天,這時候說放棄也不是說繼續也沒時間,哀時間在走壓力要有,今天的部分我們就先到這裡了,感謝大家觀看,我們明天見。


上一篇
第十八天:強制卸載DLL:上
下一篇
第二十天:前十天統結
系列文
闖入DLL的世界 DLL我要進來了哦30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言